package cn.singno.bob.common.utils;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import cn.singno.bob.common.emun.FileOperateEmun;
import cn.singno.bob.common.exception.FileOperateException;

/**
 * <p>名称：Fileutils.java</p>
 * <p>描述：文件操作的工具类</p>
 * <pre>
 * 		文件移动，拷贝，删除，新增
 * </pre>
 * @author 鲍建明
 * @date 2014年8月6日 下午5:05:04
 * @version 1.0.0
 */
public class Fileutils {
	
	private static Log logger = LogFactory.getLog(Fileutils.class);


	
	public static void copyFile(String file1, String file2){
	}
	
	
	
	
	/**
	 * InputStream 转 byte[]
	 * @param in
	 * @return
	 * @throws IOException 
	 */
	public static byte[] inputStream2ByteArray(InputStream in) throws IOException {
		try {
			return IOUtils.toByteArray(in);
		} finally{
			IOUtils.closeQuietly(in);
		}
	}
	
	/**
	 * file --> byte[]
	 * @param file
	 * @return
	 * @throws FileOperateException
	 */
	public static byte[] file2ByteArray(String file) throws FileOperateException{
		
		try {
			return inputStream2ByteArray(new FileInputStream(file));
		} catch (Exception e) {
			logger.error(e);
			throw new FileOperateException(FileOperateEmun.FILE_NOT_EXITS);
		}
	}
	
	
	/**
	 * 获取文件的后缀类型
	 * @param file
	 * @return
	 */
	public static String getFileSuffixType(String file){
		return FilenameUtils.getExtension(file);
	}
	
	/**
	 * 
	 * <p>描述：关闭输出流</p>
	 * <pre>
	 *    
	 * </pre>
	 * @param out
	 */
	public static void close(OutputStream out){
		IOUtils.closeQuietly(out);
	}
	
	/**
	 * 
	 * <p>描述：关闭输入流</p>
	 * <pre>
	 *    
	 * </pre>
	 * @param in
	 */
	public static void close(InputStream in){
		IOUtils.closeQuietly(in);
	}
	
	
	/**
	 * 
	 * <p>描述：输入流转字节数组</p>
	 * <pre>
	 *    
	 * </pre>
	 * @param input
	 * @return
	 */
	public static byte[] toByteArray(InputStream input){
		try {
			return IOUtils.toByteArray(input);
		} catch (IOException e) {
			logger.error( "输入流转字节数组失败", e);
			return null;
		}
	}
	
}
